package com.d3works.apps.account.service;

import com.d3works.apps.account.db.AccountingReport;
import com.d3works.apps.account.db.AccountingReportMoveLine;
import com.d3works.apps.account.db.PaymentMoveLineDistribution;
import com.d3works.apps.base.db.Partner;
import com.d3works.exception.D3worksException;
import com.d3works.meta.db.MetaFile;
import java.io.IOException;
import java.util.List;

public interface AccountingReportMoveLineService {

  public void createAccountingReportMoveLines(
      List<Long> paymentMoveLineDistributionIds, AccountingReport accountingReport);

  public void createAccountingReportMoveLine(
      PaymentMoveLineDistribution paymentMoveLineDistribution, AccountingReport accountingReport);

  public void processExportMoveLine(
      AccountingReportMoveLine reportMoveLine, AccountingReport accountingExport);

  public List<Partner> getDasToDeclarePartnersFromAccountingExport(
      AccountingReport accountingExport);

  public MetaFile generateN4DSFile(AccountingReport accountingExport, String fileName)
      throws D3worksException, IOException;

  public List<AccountingReportMoveLine> getDasToDeclareLinesFromAccountingExport(
      AccountingReport accountingExport);

  public List<String> generateN4DSLines(AccountingReport accountingExport) throws D3worksException;

  public List<Object[]> getN4DSDeclaredPartnersData(AccountingReport accountingExport);

  public String computeNic(String registrationCode, String countryAlpha2Code);

  public String computeSiren(String registrationCode, String countryAlpha2Code);

  public String setN4DSLine(String heading, String value);

  public void updateN4DSExportStatus(AccountingReport accountingExport);
}
